using Object = UnityEngine.Object;

namespace ZFramework.Runtime
{
    public delegate void InitResourcesCompleteCallback();
    public interface IResourceMgr
    {
        void InitResource(InitResourcesCompleteCallback initResourcesCompleteCallback);
        void LoadAssetAsync<T>(string assetPath, LoadAssetCallbacks loadAssetCallbacks, object userData = null)
            where T : Object;

        //void UnloadAsset(Object asset);
        void UnloadAsset(string assetPath);

        void LoadSceneAsync(string assetPath, LoadSceneCallbacks loadSceneCallbacks, object userData = null);

        void UnloadScene(string assetPath, UnloadSceneCallbacks unloadAssetCallbacks, object userData = null);

        void LoadBinary(string assetPath, LoadBinaryCallbacks loadBinaryCallbacks, object userData = null);
        
        void UnloadBinary(string assetPath);
        
    }
}
